package com.hsnn.medstgmini.settlement.dao;

import java.util.List;
import java.util.Map;

import com.hsnn.medstgmini.settlement.model.SetSettlement;
import com.hsnn.medstgmini.settlement.model.SetSettlementDetail;
import com.hsnn.medstgmini.settlement.model.SetSettlementfirst;
import com.hsnn.medstgmini.settlement.model.form.SetSettlementForm;
import com.hsnn.medstgmini.sys.model.SysUser;
import com.hsnn.medstgmini.util.Pagination;

public interface SettlementFirstDao {
	/**
	 * 
	 *@category 保存一级结算单信息（医疗机构）
	 *@author 邱磊
	 *@date 2015年7月22日 下午4:01:27
	 *@param data
	 */
	public void saveSettlementFirst(SetSettlement data);
	/**
	 * 
	 *@category 获取我的结算单（医疗机构）
	 *@author 邱磊
	 *@date 2015年7月22日 上午10:35:33
	 *@param page
	 *@return
	 */
	public Pagination getSettlementFirstDataList(Pagination page);
	/**
	 * 
	 *@category 获取勾选结算单明细列表数据（医疗机构）
	 *@author 邱磊
	 *@date 2015年7月22日 下午1:25:09
	 *@param page
	 *@return
	 */
	public Pagination getAddFirstDetailDataList(Pagination page);
	/**
	 * 
	 *@category 根据结算单ID获取结算单信息
	 *@author 邱磊
	 *@date 2015年7月22日 下午2:06:14
	 *@param settlementId
	 *@return
	 */
	public SetSettlementfirst getSetFirstById(String settlementId);
	/**
	 * 
	 *@category 添加一级结算单明细（医疗机构）
	 *@author 邱磊
	 *@date 2015年7月22日 下午2:28:33
	 *@param page
	 *@return
	 */
	public void addFirstDetail(SetSettlementDetail form, String str, SysUser loginUser);
	/**
	 * 
	 *@category 根据支付明细ID串查询已加入结算单的明细
	 *@author 邱磊
	 *@date 2015年7月22日 下午2:37:50
	 *@param ids
	 *@return
	 */
	public List<SetSettlementDetail> getHaveSetFirstDetailList(String settlementId, String ids);
	/**
	 * 
	 *@category 编辑保存一级结算单信息（医疗机构）
	 *@author 邱磊
	 *@date 2015年7月22日 下午4:32:32
	 *@param data
	 */
	public void editSettlementFirst(SetSettlement data);
	/**
	 * 
	 *@category 删除一级结算单信息（医疗机构）
	 *@author 邱磊
	 *@date 2015年7月22日 下午4:42:29
	 *@param settlementId
	 */
	public void deleteSettlementFirst(List<String> ids);
	/**
	 * 
	 *@category 根据一级结算单ID串查询已提交的一级结算单
	 *@author 邱磊
	 *@date 2015年7月22日 下午7:21:24
	 *@param ids
	 *@return
	 */
	public List<SetSettlement> getHaveSetFirstList(List<String> ids);
	/**
	 * 
	 *@category 获取某个结算单应支付金额
	 *@author 邱磊
	 *@date 2015年7月22日 下午8:47:08
	 *@param id
	 *@return
	 */
	public Double getSumSetFirstMoney(String id);
	/**
	 * 
	 *@category 获取生成结算单后的可用余额
	 *@author 邱磊
	 *@date 2015年7月23日 上午9:16:37
	 *@param ids
	 *@return
	 */
	public Double getAvailableAmt(List<String> ids);
	/**
	 * 
	 *@category 提交一级结算单
	 *@author 邱磊
	 *@date 2015年7月22日 下午7:26:05
	 *@param form
	 *@param str
	 */
	public void subSettlementFirst(SetSettlement form, List<String> ids);
	/**
	 * 
	 *@category 获取结算单明细（医疗机构）
	 *@author 邱磊
	 *@date 2015年7月22日 下午7:54:36
	 *@param page
	 *@return
	 */
	public Pagination getSetSettlemenDetailDataList(Pagination page);
	/**
	 * 
	 *@category 删除明细（医疗机构）
	 *@author 邱磊
	 *@date 2015年7月22日 下午8:25:59
	 *@param page
	 */
	public void deleteSetSettlemenFirstDetail(String firstlevelSettlementId,List<String> ids, SysUser loginUser);
	/**
	 * 
	 *@category 获取一级结算单第一次审核数据（核算中心）
	 *@author 邱磊
	 *@date 2015年7月23日 上午11:03:49
	 *@param page
	 *@return
	 */
	public Pagination getAuditFirstOneDataList(Pagination page);
	/**
	 * 
	 *@category 获取一级结算单第二次审核数据（核算中心）
	 *@author 邱磊
	 *@date 2015年7月23日 上午11:03:49
	 *@param page
	 *@return
	 */
	public Pagination getAuditFirstSecondDataList(Pagination page);
	/**
	 * 
	 *@category 获取二级结算单第一次审核数据（采购中心）
	 *@author 邱磊
	 *@date 2015年7月23日 上午11:03:49
	 *@param page
	 *@return
	 */
	public Pagination getAuditSecondOneDataList(Pagination page);
	/**
	 * 
	 *@category 获取二级结算单第二次审核数据（采购中心）
	 *@author 邱磊
	 *@date 2015年7月23日 上午11:03:49
	 *@param page
	 *@return
	 */
	public Pagination getAuditSecondSecondDataList(Pagination page);
	/**
	 * 
	 *@category 根据结算单ID获取结算单信息(新表)
	 *@author 邱磊
	 *@date 2015年7月22日 下午2:06:14
	 *@param firstlevelSettlementId
	 *@return
	 */
	public SetSettlement getSetSettlementById(String settlementId);
	/**
	 * 
	 *@category 审核一级结算单第一次（核算中心）
	 *@author 邱磊
	 *@date 2015年7月23日 下午4:45:21
	 *@param form
	 */
	public void auditFirstOne(SetSettlementForm form);
	/**
	 * 
	 *@category 获取一级结算单审核信息
	 *@author 邱磊
	 *@date 2015年7月23日 下午5:41:27
	 *@param settlementId
	 *@return
	 */
	public List<Map<String, Object>> getSetFirstAuditInfo(String settlementId);
	/**
	 * 
	 *@category 审核一级结算单第二次（核算中心）
	 *@author 邱磊
	 *@date 2015年7月23日 下午4:45:21
	 *@param form
	 */
	public void auditFirstSecond(SetSettlement form);
	/**
	 * 
	 *@category 审核一级结算单第二次（采购中心）
	 *@author 邱磊
	 *@date 2015年7月23日 下午4:45:21
	 *@param form
	 */
	public void centerAuditFirstSecond(SetSettlement form);
	/**
	 * 
	 *@category 保存二级结算单信息
	 *@author 邱磊
	 *@date 2015年7月23日 下午7:14:37
	 *@param data
	 */
	public void saveSettlementSecond(SetSettlement data);
	/**
	 * 
	 *@category 获取二级结算单（核算中心）
	 *@author 邱磊
	 *@date 2015年7月22日 上午10:35:33
	 *@param page
	 *@return
	 */
	public Pagination getSettlementSecondDataList(Pagination page);
	/**
	 *@category 获取我的结算单查看列表（核算中心）
	 *@author 徐国鹏
	 *@date 2015年7月22日 上午10:35:33
	 *@param page
	 */
	public Pagination getSettlementSecondDataListSee(Pagination page);
	/**
	 * 
	 *@category 获取可加入二级结算单明细（核算中心）
	 *@author 邱磊
	 *@date 2015年7月22日 下午1:25:09
	 *@param page
	 *@return
	 */
	public Pagination getAddSecondDetailDataList(Pagination page);
	/**
	 * 
	 *@category 根据结算单ID获取二级结算单信息
	 *@author 邱磊
	 *@date 2015年7月22日 下午2:06:14
	 *@param settlementId
	 *@return
	 */
	public SetSettlement getSetSecondById(String settlementId);
	/**
	 * 
	 *@category 根据支付明细ID串查询已加入结算单的明细（核算中心）
	 *@author 邱磊
	 *@date 2015年7月22日 下午2:37:50
	 *@param ids
	 *@return
	 */
	public List<SetSettlementDetail> getHaveSetSecondDetailList(String settlementId,List<String> ids);
	/**
	 * 
	 *@category 添加二级结算单明细（核算中心）
	 *@author 邱磊
	 *@date 2015年7月22日 下午2:28:33
	 *@param page
	 *@return
	 */
	public void addSecondDetail(SetSettlementDetail form, List<String> str, SysUser user);
	/**
	 * 
	 *@category 根据结算单ID获取结算单信息
	 *@author 邱磊
	 *@date 2015年7月22日 下午2:06:14
	 *@param settlementId
	 *@return
	 */
	public SetSettlement getSettlementById(String settlementId);
	/**
	 * 
	 *@category 编辑保存二级结算单信息（核算中心）
	 *@author 邱磊
	 *@date 2015年7月22日 下午4:32:32
	 *@param data
	 */
	public void editSettlementSecond(SetSettlement data);
	/**
	 * 
	 *@category 删除二级结算单信息（核算中心）
	 *@author 邱磊
	 *@date 2015年7月22日 下午4:42:29
	 *@param settlementId
	 */
	public void deleteSettlementSecond(String settlementId);
	/**
	 * 
	 *@category 根据二级结算单ID串查询已提交的结算单（核算中心）
	 *@author 邱磊
	 *@date 2015年7月22日 下午7:21:24
	 *@param ids
	 *@return
	 */
	public List<SetSettlement> getHaveSetSecondList(List<String> ids);
	/**
	 * 
	 *@category 获取生成结算单后的核算中心账户可用余额（核算中心）
	 *@author 邱磊
	 *@date 2015年7月23日 上午9:16:37
	 *@param ids
	 *@return
	 */
	public Double getSecondAvailableAmt(List<String> ids);
	/**
	 * 
	 *@category 提交二级结算单（核算中心）
	 *@author 邱磊
	 *@date 2015年7月22日 下午7:26:05
	 *@param form
	 *@param str
	 */
	public void subSettlementSecond(SetSettlement form, List<String> ids);
	
	/**
	 * 
	 *@category 查看医疗机构结算单
	 *@author 单大伟
	 *@date 2015年7月23日 下午4:45:21
	 *@param form
	 */
	public Pagination getHospSettleList(Pagination page);
	/**
	 * 
	 *@category 根据结算单Id查询信息
	 *@author 邱磊
	 *@date 2015年7月24日 下午5:33:12
	 *@param settlementId
	 *@return
	 */
	public Map<String, Object> getSettlementInfoById(String settlementId);
	
	public Pagination hospSettleAuditList(Pagination page);
	
	public Pagination getChildSettlementList(Pagination page);
	
	public Pagination getSetSettletdetailinfoList(Pagination page);
	/**
	 * 
	 *@category 获取初审核查看页面数据（核算中心，采购中心）
	 *@author 邱磊
	 *@date 2015年7月23日 上午11:03:49
	 *@param page
	 *@return
	 */
	public Pagination getAuditSettlementSeeDataList(Pagination page);
	/**
	 * 
	 *@category 获取复审核查看页面数据（核算中心，采购中心）
	 *@author 邱磊
	 *@date 2015年7月23日 上午11:03:49
	 *@param page
	 *@return
	 */
	public Pagination getRAuditSettlementSeeDataList(Pagination page);
	
	public Pagination auditPass(Pagination page);
	
	public Pagination auditUnPass(Pagination page);
	
	public Pagination reAuditPass(Pagination page);
	
	public Pagination reAuditUnPass(Pagination page);
	public Object getSettlementDetailInfoBysetSettlementId(Pagination page);
	
	public Pagination getSettlementDataList(Pagination page);
	Pagination getSetSettlemenDetailList(Pagination page);
	
	void delSetSettlemenFirstDetail(String settlementId, List<String> ids, SysUser loginUser);

	/**
	 * @category 检测名称是否存在
	 * @date 2015年8月11日
	 * @param settlement
	 * @return
	 */
	boolean checkSameName(SetSettlement settlement);
	
}